// Generated from F:/Compiler/SCCompiler/G4\cmm.g4 by ANTLR 4.5.3
package silvercrux.cmm;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;

/**
 * This interface defines a complete generic visitor for a parse tree produced
 * by {@link cmmParser}.
 *
 * @param <T> The return type of the visit operation. Use {@link Void} for
 * operations with no return type.
 */
public interface cmmVisitor<T> extends ParseTreeVisitor<T> {
	/**
	 * Visit a parse tree produced by {@link cmmParser#prog}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitProg(cmmParser.ProgContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#writeStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitWriteStatement(cmmParser.WriteStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#primaryExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimaryExpression(cmmParser.PrimaryExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#postfixExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPostfixExpression(cmmParser.PostfixExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#argumentExpressionList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArgumentExpressionList(cmmParser.ArgumentExpressionListContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#unaryExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitUnaryExpression(cmmParser.UnaryExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#multiplicativeExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMultiplicativeExpression(cmmParser.MultiplicativeExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#castExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCastExpression(cmmParser.CastExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#additiveExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAdditiveExpression(cmmParser.AdditiveExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#shiftExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitShiftExpression(cmmParser.ShiftExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#relationalExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRelationalExpression(cmmParser.RelationalExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#equalityExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEqualityExpression(cmmParser.EqualityExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#andExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAndExpression(cmmParser.AndExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#exclusiveOrExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExclusiveOrExpression(cmmParser.ExclusiveOrExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#inclusiveOrExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInclusiveOrExpression(cmmParser.InclusiveOrExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#logicalAndExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLogicalAndExpression(cmmParser.LogicalAndExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#logicalOrExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLogicalOrExpression(cmmParser.LogicalOrExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#conditionalExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConditionalExpression(cmmParser.ConditionalExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#assignmentExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAssignmentExpression(cmmParser.AssignmentExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#constantExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConstantExpression(cmmParser.ConstantExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#assignmentOperator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAssignmentOperator(cmmParser.AssignmentOperatorContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#unaryOperator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitUnaryOperator(cmmParser.UnaryOperatorContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#declaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDeclaration(cmmParser.DeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#declarationSpecifier}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDeclarationSpecifier(cmmParser.DeclarationSpecifierContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#initDeclaratorList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInitDeclaratorList(cmmParser.InitDeclaratorListContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#declarator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDeclarator(cmmParser.DeclaratorContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#directDeclarator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDirectDeclarator(cmmParser.DirectDeclaratorContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#identifierList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIdentifierList(cmmParser.IdentifierListContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#parameterList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitParameterList(cmmParser.ParameterListContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#parameterDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitParameterDeclaration(cmmParser.ParameterDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#initDeclarator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInitDeclarator(cmmParser.InitDeclaratorContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#initializer}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInitializer(cmmParser.InitializerContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#initializerList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInitializerList(cmmParser.InitializerListContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitStatement(cmmParser.StatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#compoundStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCompoundStatement(cmmParser.CompoundStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#blockItemList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBlockItemList(cmmParser.BlockItemListContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#blockItem}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBlockItem(cmmParser.BlockItemContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#selectionStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSelectionStatement(cmmParser.SelectionStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#iterationStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIterationStatement(cmmParser.IterationStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#jumpStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitJumpStatement(cmmParser.JumpStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#expressionStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpressionStatement(cmmParser.ExpressionStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpression(cmmParser.ExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#compilationUnit}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCompilationUnit(cmmParser.CompilationUnitContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#translationUnit}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTranslationUnit(cmmParser.TranslationUnitContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#externalDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExternalDeclaration(cmmParser.ExternalDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#functionDefinition}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunctionDefinition(cmmParser.FunctionDefinitionContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#declarationList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDeclarationList(cmmParser.DeclarationListContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#typeSpecifier}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypeSpecifier(cmmParser.TypeSpecifierContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#typeName}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypeName(cmmParser.TypeNameContext ctx);
	/**
	 * Visit a parse tree produced by {@link cmmParser#specifierQualifierList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSpecifierQualifierList(cmmParser.SpecifierQualifierListContext ctx);
}